#ifndef FENETRECLIENT_H
#define FENETRECLIENT_H

#include <QtGui>

#include "ObservateurBase.h"

class ObservateurBase;

class FenetreObservateur : public QMainWindow
{
    Q_OBJECT

protected:
    QMenu *menuFichier; // La barre de menu.
    QToolBar *toolBarFichier; // La barre d'outils.
    QWidget *mainWidget; // le corps.
    QHBoxLayout *mainLayout; // layout du corps.
    QStatusBar *barreEtat; // La barre d'état.

    /* Le menu a gauche. */
    QWidget *widgetGauche;
    QVBoxLayout *layoutGauche;

    QLabel * ListeEtudiantLabel;
    QTreeView * ListeEtudiantQTreeView;
    QStringListModel * modeleListeEtu;
    QLabel * ActiviteDesEtudiantsLabel;
    QTextEdit *console;

    QLabel * ZoneChatAvecEtuLabel;
    QWidget * widgetBasGauche;
    QGridLayout * layoutBasGauche;

    QPushButton * BoutonEnvoyerMessage;
    QLineEdit * ZoneDechatLineEdit;
    QTextEdit * ZoneDeChatTextEdit;

    /* Le menu de droite. */
    QWidget *widgetDroit;
    QVBoxLayout *layoutDroit;
    QFormLayout *layoutConnexion;
    QLabel *etat;
    QLineEdit *ip;
    QLineEdit *port;
    QLineEdit *nick;
    QPushButton *boutonConnexion;
    QLabel * labelListeSalles;
    QLabel * labelListeAct;
    QTreeView *listeSalles;
    QStringListModel *modeleListeSalles;
    QTreeView *listeActivites;
    QStringListModel *modeleListeActivites;

    QLabel * ListeDesActivitesDansLaSalle;

    QCheckBox * Activite1;
    QCheckBox * Activite2;
    QCheckBox * Activite3;
    QCheckBox * Activite4;
    QLineEdit * nomSalle;
    QPushButton * NouvelleSalle;

    QTextEdit *console2;

    ObservateurBase *observateurBase; // Le client reseau.

public:
    FenetreObservateur();
    string getLogin();
    void ecrireConsole2(string message);
    void ecrireConsole2(QString message);
    void ecrireConsole2(const char *message);
    void affiche(int);
    QStringList listeAct();
    void activerAssistant();
    void desactiverAssistant();
    void ecrireMessageChat(QString message);


protected slots:
    void onClick_connexion();
    void onClick_salle(QModelIndex);
    void onClick_AjouterSalle();
    void onClick_EnvoyerMessageZoneChat();


public slots:
    void etatConnecte();
    void etatDeconnecte(QString cause);
    void remplirListeSalles(QStringList liste);
    void remplirListeActivites(QStringList liste);
    void modifierListeEtudiant(QString liste);
    void connecteasalle();
    void connecteaactivite(QString);
    void onClick_listeEtu(QModelIndex);

};

#endif // FENETRECLIENT_H
